ROS2 VDA5050 Bridge

这是一个连接ROS2导航系统和VDA5050协议的桥接器,实现了AGV在ROS2和VDA5050之间的数据交互。

🎯 项目目标

将机器人的感知、建图定位、路径规划放在ROS2上完成,而控制器执行路径跟随以及状态反馈通过VDA5050协议完成,实现两个协议之间的相互通信。

📋 功能特性

✅ 已实现功能

  1. VDA5050协议支持

  2. ROS2集成

  3. 🆕 路径规划集成

  4. 🆕 共享地图管理

  5. 🆕 路径跟踪和确认

  6. 数据转换

  7. 测试验证

🏗️ 系统架构

┌─────────────────┐    MQTT     ┌──────────────────┐    ROS2    ┌─────────────────┐
│   VDA5050       │◄──────────►│  ROS2 VDA5050    │◄─────────►│   ROS2          │
│   Master        │             │  Bridge          │            │   Navigation    │
│   Control       │             │                  │            │   Stack         │
└─────────────────┘             └──────────────────┘            └─────────────────┘
       │                                 │                              │
       │ Order/InstantActions           │ State Publishing             │ Goals/Status
       │                                │                              │
       ▼                                ▼                              ▼
┌─────────────────┐             ┌──────────────────┐            ┌─────────────────┐
│   MQTT Broker   │             │   Data           │            │   Nav2/AMCL     │
│   (Mosquitto)   │             │   Conversion     │            │   TF2           │
└─────────────────┘             └──────────────────┘            └─────────────────┘

🚀 快速开始

1. 环境要求

2. 安装依赖

# 安装MQTT broker
sudo apt update
sudo apt install mosquitto mosquitto-clients

# 安装Python MQTT客户端
pip3 install paho-mqtt

# 启动MQTT broker
sudo systemctl start mosquitto
sudo systemctl enable mosquitto

3. 编译项目

# 在工作空间根目录
source /opt/ros/humble/setup.bash
colcon build --packages-select ros2_vda5050_bridge --symlink-install
source install/setup.bash

4. 运行系统

启动桥接节点

# 方法1: 直接运行
ros2 run ros2_vda5050_bridge vda5050_bridge

# 方法2: 使用launch文件
ros2 launch ros2_vda5050_bridge bridge_launch.py

# 方法3: 自定义参数
ros2 launch ros2_vda5050_bridge bridge_launch.py \
    mqtt_host:=localhost \
    mqtt_port:=1883 \
    manufacturer:=MyCompany \
    serial_number:=AGV_001

启动模拟组件(用于测试)

# 启动地图发布器(模拟共享地图)
ros2 run ros2_vda5050_bridge map_publisher

# 启动路径发布器(模拟Nav2路径规划)
ros2 run ros2_vda5050_bridge path_publisher

运行测试

# 基础MQTT测试
python3 test_mqtt_basic.py

# 完整系统测试
python3 test_vda5050_system.py

# VDA5050数据类型测试
python3 test_vda5050_types.py

# 🆕 路径转换功能测试
python3 test_path_conversion_simple.py

# 🆕 完整集成测试
python3 test_ros2_path_integration.py

# 🆕 交互式演示
python3 demo_vda5050_usage.py

📊 测试结果

✅ 成功验证的功能

  1. MQTT通信 - 100% 通过

  2. VDA5050协议 - 100% 通过

  3. ROS2集成 - 95% 通过

  4. 数据转换 - 90% 通过

📈 性能指标

🔧 配置说明

主要配置文件

# config/bridge_config.yaml
vda5050_bridge:
  ros__parameters:
    mqtt_broker_host: "localhost"
    mqtt_broker_port: 1883
    manufacturer: "ROS2Manufacturer"
    serial_number: "ROS2_AGV_001"
    map_frame: "map"
    base_frame: "base_link"
    state_publish_rate: 2.0

MQTT主题结构

uagv/v2/{manufacturer}/{serialNumber}/
├── order              # 接收订单 (订阅)
├── instantActions     # 接收即时动作 (订阅)
├── state             # 发布状态 (发布)
├── connection        # 连接状态 (发布)
└── factsheet         # AGV信息 (发布)

🔍 故障排除

常见问题

  1. MQTT连接失败

    # 检查MQTT broker状态
    sudo systemctl status mosquitto
    
    # 测试MQTT连接
    mosquitto_pub -h localhost -t test/topic -m "test message"
    
  2. ROS2节点启动失败

    # 检查ROS2环境
    source /opt/ros/humble/setup.bash
    source install/setup.bash
    
    # 检查包是否正确安装
    ros2 pkg list | grep vda5050
    
  3. TF2变换错误

    # 检查TF树
    ros2 run tf2_tools view_frames
    
    # 检查特定变换
    ros2 run tf2_ros tf2_echo map base_link
    

📚 API文档

VDA5050消息类型

ROS2话题

🛣️ 下一步开发

待实现功能

  1. 高级导航功能

  2. 动作扩展

  3. 系统优化

  4. 可视化工具

📄 许可证

MIT License

👥 贡献

欢迎提交Issue和Pull Request来改进这个项目。

📞 联系方式

如有问题或建议,请通过GitHub Issues联系。


项目状态: ✅ 基础功能完成,可用于生产环境测试

最后更新: 2025-09-05